Learning outcomes:


  1. Demonstrate workflows used in network design.
  2. Implement and interpret networking protocols and/or communication protocols.

Stages:


  1. Design the board.
  2. Board implementation.
  3. Soldering.
  4. Programming



Embedded Networking and Communications

This assignment aimed to design, build, and connect nodes with network to do some specific functions in a synchronized way. While working in the assignment I was trying to work in a flow of:

the very beginning of this assignment I was deciding over the idea and applicability.
The idea is that the two communicators will be an Arduino that will act as a master that communicates with the board with my design as a slave to follow some sort of instructions to get the final output stimulated and the action is done. In each step of my workflow,
I was learning some concepts and features through different online resources, make a primary version, test, then implement the final product.

Circuit Design

Self-Learning (EAGLE Software)

Firstly, I was learning some basics and advanced concepts in eagle to be able to design the needed circuit on it before implementation





Circuit

The steps taken to design the PCB with a purpose to COMMUNICATE:

  1. Put the components

    1. ATTINY45

    2. Pins Connectors

    3. ceramic capacitor

    4. 1K Resistor

  2. Connect as wire frames in the schematic view

  3. Check overall connection and design

  4. Go to board view to check the paths and PCB design

  5. Adjust and develop the full board design with the traces and connecting nodes



Schematic view(shows components name and connections between them


Board view(shows traces, holes and layers of the acual circuit will implement)


Emporting the circuit picture to implement
Make monochromatic(black&white), 500dpi and window to capture only the window view you open

The picture toimport to Fabmodule and implement

Eagle files


Board Implementation

Milling

In the milling phase the PCB to be milled with the proper file extension. I used the machine available in the lab. I face some problems regarding the circuit finish and I overcame them all in the second trial.

Then Let's go for implementation


I've used SRM20 CNC milling machine and you can see all the deatils of machine and process from my electronics production assignemnt

How to fix the tool, To keep it safe from falling and break while fixing you have to hold it from the bottom like this till you make sure it's fixed.


This reults was't good, You need to make sure that the bed liviling is straight to avoid and losses in traces and keep checking it through working, Don't wait to the end of operation to check..
This trial was good, So i leave it to finish to the end


RML machining file


Soldering

After finishing PCB milling, the board is ready to be assembled with the components based on the provided design above.



After implementing and soldering:


Important note: Make sure from the soldering as much as you can, Beacuse while connecting ther'es a lot of trials and a lot of plug-in plug-out specially with connectors, So this can pull the connectors out of the soldering and can affect the fixture of components which will affect the communication.




Arduino

Self-Learning:


This was a fruitful tutorial about the Arduino process of what I want to do in the assignment from burning the codes on the board and the Arduino and how the programs will let these two hardware products communicate in an efficient way


Prepare Arduino

In this step I was preparing the Arduino to be programmed by uploading Arduino ISP over it.

Connections and Communication (Network)

This is the phase of getting the final product ready to be used in a flow of steps as follows:

  1. Uploaded Arduino ISP code on the Arduino board to make it a programmer.





  2. Burn the program of communication that will be used in my own board on another Arduino to test the functionality and validity of the code. In this step the two Arduino boards have communicated wirily that made me sure that the code is functioning well before burning it on my communication board

    // Include the Software Serial library 
    #include  // Define a Software Serial object and the used pins 
    SoftwareSerial softSerial(8, 9);
    // LED Pin 
    int LED = 13; 
    void setup()  { 
        softSerial.begin(9600); 
        pinMode(LED, OUTPUT);
    } 
    void loop()  { // Check if there is anything in the soft Serial Buffer   
        if (softSerial.available())  { 
        // Read one value from the soft serial buffer and store it in the variable com     
        int com = softSerial.read(); 
        // Act according to the value received     
        if (com == 'x')  { 
        // Stop the LED       
        digitalWrite(LED, LOW);     
        }     else if (com == 'a')  { 
              // Start the LED     
              digitalWrite(LED, HIGH);     
                }
           } 
        }
    
    Slave code, In case of the board change (8,9) to (3,4) and LED= 13 to LED = 0 or 1 (based on which pen you want to make it positive)


    // Include the Software Serial library 
    #include  // Define a Software Serial object and the used pins 
    SoftwareSerial softSerial(8, 9);  // RX, TX 
    void setup()  {  
        Serial.begin(9600);   softSerial.begin(9600);
    } 
    
    void loop()  { 
        // Check for received characters from the computer   
        if (Serial.available())  { 
        // Write what is received to the soft serial     
        softSerial.write(Serial.read());   }
    }
    
    Master code to burn on the arduino that connected to the computer

    Arduino-Arduino communication




  3. Disconnect the testing Arduino and replaced it with my board

    Connect 10uf capacitor to reset and GND to prevent the arduino from resetting after burnining the code(find the full details in the tutorial above)



  4. Prepare my own board by burn on it the bootloader to be ready for programming




    Importatnt:Make this step when you open a new and empty window of Arduino

  5. Burn the communication tested program that will allow the board to be the slave that follows the master Arduino and allows the board to light or off when it receives the signal from serial monitor from the Arduino to do so, Then connect VCC,GND,TX and RX ...




  6. The final output is now ready for the use: Arduino and another board -made on my own- are communicating to light or switch off based on an Arduino signal to do so









    Arduino source file





    Done

    1. Design a board.
    2. Implement a board on CNC milling.
    3. Connections.

    New Learned

    1. Soldering better.
    2. How to program boards by boards.
    3. How to make a communication.

    Enjoyed with

    1. Trials.
    2. Debugging
    3. Learning advanced soldering skills.